/* #include <stdio.h>
int main()
整型提升会造成数据丢失
{
    char c = -1;// -1是整数。32个比特位  char只有8个bit位，放不下，取低八位放入，
    // 10000000000000000000000000000001           //-1 的原码
    // 11111111111111111111111111111110           -1 的反码  符号位不变  其余位按位取反
    // 111111111111111111111111  11111111             //-1的补码
    return 0; */

//  整型家族 在 内存中存储的是补码，打印时打印补码对应的原码所对应的内容
#include <stdio.h>
//          整型提升   对于大小小于int类型的数据进行整形提升
int main()
{
    char a = 5; //
    // 00000000000000000000000000000101
    // a中存储的是 00000101   低的八位
    char b = 126;

    // 00000000000000000000000001111110
    // 011111110 b中存的是这样
    char c = a + b;
    // 00000000000000000000000000000101 ->a  计算c=a+b时，发现a和b的字节数不够，取内存中的值，按最高位补
    // 00000000000000000000000001111110 ->b
    // 00000000000000000000000010000011  a+b
    // c 存储的是 10000011
    // 11111111111111111111111110000011   c高位提升后的结果，补1  补完后的数字是内存中的补码
    // 11111111111111111111111110000010   减一后得到反码
    // 10000000000000000000000001111101   原码  反码的符号位不变，其余位按位取反
    // 1111101  表示125   最高位的1表示负数
    printf("%d\n", c); // c = -125

    char x = 1;
    printf("%u\n", sizeof(c));  // 1
    printf("%u\n", sizeof(+c)); // 4
    printf("%u\n", sizeof(-c)); // 4

    return 0;
}
// 若大于等于整型类型的数据在进行运算时，也会进行转换，称为算数转换

// long double
// doubel
// float
// unsigned long int
// long int
// unsigned int
// int   不同类型的数进行运算时，向上转换，该体系称为寻常算数转换
//  static修饰的变量每次调用是不会重新创建
//  操作符的优先级
//  操作符的结合性
//  是否控制求值顺序